// 函数的参数默认值
function sum(x = 1, y = 2, z = 3){ 
    return x + y + z;
}

// 声明展开
let params = [3, 4, 5];
console.log(sun(...params));

// 值交换
[x, y] = [y, x]

// 使用类进行面向对象编程
function Book(title, pages, isbn){ 
    this.title = title;
    this.pages = pages;
    this.isbn = isbn;
}
Book.prototype.printTitle = function(){ 
    console.log(this.title);
}

// ES2015 写法
class Book{
    constructor(title,pages,isbn){
        this.title = title;
        this.pages = params;
        this.isbn = isbn;
    }
    printTitle(){
        console.log(this.title);
    }
}

// js 面向对象编程还是基于 原型实现的 
// 类的继承
class ITBook extends Book{ 
    constructor(title, pages, isbn, tech){ 
        super(title, pages, isbn);
        this.tech = tech;
    }
    printTech(){
        console.log(this.tech);
    }
}

// 属性存取器
class Person { 
    constructor(name){ 
        this._name = name;
    }
    get name(){ 
        return this._name;
    }
    set name(value){ 
        this._name = value;
    }
}

// 迭代器、类型数组、Set,Map,WeakSet,WeakMap,....

//2.2.9 模块
// CommonJS 模块

// TypeScript
/**
 *  主要功能之一为JS变量提供类型支持
 * 
 */